<<<<<<< HEAD
#1、输入数字n，输出n天前的日期（time或者datatime模块）
# import datetime
# now = datetime.datetime.now()
# n = input("请输入您要查看几天前的日期：")
# time = datetime.timedelta(days=int(f'{n}'))
# before_day = now - time
# print(f'{n}天前的日期为{before_day}')

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
# import os
# def ls(path):
#     for i in os.listdir(path):
#         print(i,end=' ')
# ls("E:\python-tree")

#3、列表去重，并且从小到大排序
# lst = [1,1,2,5,2,4,12,3,2,6,4,9,8]
# for i in lst:
#     n = lst.count(i)
#     if n > 1:
#         for j in range(n-1):
#             lst.remove(i)
# lst.sort()
# print(lst)

#4、如何在一个函数内部修改全局变量
#在函数内部修改全局变量，需要使用global声明

#5、如何跨模块共享全局变量
#为全局变量定义一个“全局变量管理模块”，使用时再导入全局变量管理模块

#6、python的基本数据类型有哪些？
#数字、字符串、链表，元组，字典，集合

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
# import random
# print(random.randint(1,10))
# print( random.uniform(1,10))
# print(random.random())

# 8、python中哪些是可变数据类型，哪些是不可变数据类型
#可变数据类型：链表，字典，集合
#不可变数据类型：元组，数字，字符串

#9、a+=1与a=a+1有什么区别
# a=a+1，是先取a的值，在进行加加操作。 它等同于a++;
# a+=1，是先对a进行加1操作，在返回a的值。

#10、什么是pep8？说出5点它的标准
# python编码风格简称pep8
# Beautiful is better than ugly.
# Explicit is better than implicit.
# Simple is better than complex.
# Complex is better than complicated.
# Flat is better than nested.

#11、给定一个字符串，找出字符串第一个重复的字符
# str = 'abcdbcd'
# for i in str:
#     n = str.count(i)
#     if n > 1:
#         print(f"第一个重复的字符为{i}")
#         break

#12、简述深拷贝与浅拷贝
#深浅拷贝：容器里包含可变数据类型的情况才会有深浅拷贝的区别
#浅拷贝：只会拷贝第一层地址
#深拷贝：会拷贝每一层的值

#13、简述python内存机制
#引用计数为主、分代回收和标记清除为辅的垃圾回收方式、进行内存回收管理
#还引用了小整型缓冲区及常用字符串驻留区的方式进行内存分配管理

#14、使用python实现冒泡排序，快速排序
#冒泡排序
# lst = [9,8,7,6,5,4,3,2,1]
# n = len(lst)
# for i in range(n-1):
#     for j in range(0, n - i - 1):
#         if lst[j] > lst[j + 1]:
#             lst[j], lst[j + 1] = lst[j + 1], lst[j]
# print(lst)

#快速排序
#nums = [9,8,7,6,5,4,3,2,1]
#nums = [2,6,3,9,5,1,7]
def quicksort(nums, left, right):
    flag = nums[left]
    i, j = left, right
    while i <= j:
        print(nums)
        while nums[i] < flag:
            i += 1  # i从左往右扫，找到大于等于flag的数。
        while nums[j] > flag:
            j -= 1  # j从右往左扫，找到小于等于flag的数。
        if i <= j:
            nums[i], nums[j] = nums[j], nums[i]  # 交换左右指针下标对应的数值
            # print(nums)
            i += 1  # 左指针继续往右走
            j -= 1  # 右指针继续往左走
    print(i,j, nums[i], nums[j])
    if i < right:
        quicksort(nums, i, right)  # 递归解决flag左边的低位数组的排序
    if j > left:
        quicksort(nums, left, j)  # 递归解决flag右边的低位数组的排序
nums = [2,6,3,9,5,1,7]
quicksort(nums, 0, len(nums) - 1)
print(nums)

#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
# lst = 'abc123cba'
# lst1 = lst[::-1]
# if lst == lst1:
#     print(f"{lst}是回文数")
# else:
#     print(f"{lst}不是回文数")

#16
# import json
# import time
# import requests
# with open("ip.txt","r+") as fp:
#     lst = fp.readlines()
#     with open("ip_information.txt", "w+", encoding="utf8") as fp1:
#         for i in lst:
#             lst1 = i.split(" ")
#             IP = lst1[0]
#             Bandwidth = lst1[9]
#             TIME = lst1[3].strip('[]')
#             time_array = time.strptime(TIME,"%d/%b/%Y:%H:%M:%S")
#             new = time.strftime("%Y-%m-%d %H:%M:%S",time_array)
#             response = requests.get(f'https://ip.taobao.com/outGetIpInfo?accessKey=alibaba-inc&ip={IP}')
#             response1 = json.loads(f'{response.text}')
#             region = response1['data'].get('region')
#             isp = response1['data'].get('isp')
#             fp1.write(f"{new},{region},{isp},{Bandwidth}\n")
=======
#1、输入数字n，输出n天前的日期（time或者datatime模块）
# import datetime
# now = datetime.datetime.now()
# n = input("请输入您要查看几天前的日期：")
# time = datetime.timedelta(days=int(f'{n}'))
# before_day = now - time
# print(f'{n}天前的日期为{before_day}')

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
# import os
# def ls(path):
#     for i in os.listdir(path):
#         print(i,end=' ')
# ls("E:\python-tree")

#3、列表去重，并且从小到大排序
# lst = [1,1,2,5,2,4,12,3,2,6,4,9,8]
# for i in lst:
#     n = lst.count(i)
#     if n > 1:
#         for j in range(n-1):
#             lst.remove(i)
# lst.sort()
# print(lst)

#4、如何在一个函数内部修改全局变量
#在函数内部修改全局变量，需要使用global声明

#5、如何跨模块共享全局变量
#为全局变量定义一个“全局变量管理模块”，使用时再导入全局变量管理模块

#6、python的基本数据类型有哪些？
#数字、字符串、链表，元组，字典，集合

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
# import random
# print(random.randint(1,10))
# print( random.uniform(1,10))
# print(random.random())

# 8、python中哪些是可变数据类型，哪些是不可变数据类型
#可变数据类型：链表，字典，集合
#不可变数据类型：元组，数字，字符串

#9、a+=1与a=a+1有什么区别
# a=a+1，是先取a的值，在进行加加操作。 它等同于a++;
# a+=1，是先对a进行加1操作，在返回a的值。

#10、什么是pep8？说出5点它的标准
# python编码风格简称pep8
# Beautiful is better than ugly.
# Explicit is better than implicit.
# Simple is better than complex.
# Complex is better than complicated.
# Flat is better than nested.

#11、给定一个字符串，找出字符串第一个重复的字符
# str = 'abcdbcd'
# for i in str:
#     n = str.count(i)
#     if n > 1:
#         print(f"第一个重复的字符为{i}")
#         break

#12、简述深拷贝与浅拷贝
#深浅拷贝：容器里包含可变数据类型的情况才会有深浅拷贝的区别
#浅拷贝：只会拷贝第一层地址
#深拷贝：会拷贝每一层的值

#13、简述python内存机制
#引用计数为主、分代回收和标记清除为辅的垃圾回收方式、进行内存回收管理
#还引用了小整型缓冲区及常用字符串驻留区的方式进行内存分配管理

#14、使用python实现冒泡排序，快速排序
#冒泡排序
# lst = [9,8,7,6,5,4,3,2,1]
# n = len(lst)
# for i in range(n-1):
#     for j in range(0, n - i - 1):
#         if lst[j] > lst[j + 1]:
#             lst[j], lst[j + 1] = lst[j + 1], lst[j]
# print(lst)

#快速排序
<<<<<<< HEAD
=======
#nums = [9,8,7,6,5,4,3,2,1]
#nums = [2,6,3,9,5,1,7]
>>>>>>> f48555796bfc0a4bec199762e860087db9167c8e
def quicksort(nums, left, right):
    flag = nums[left]
    i, j = left, right
    while i <= j:
<<<<<<< HEAD
=======
        print(nums)
>>>>>>> f48555796bfc0a4bec199762e860087db9167c8e
        while nums[i] < flag:
            i += 1  # i从左往右扫，找到大于等于flag的数。
        while nums[j] > flag:
            j -= 1  # j从右往左扫，找到小于等于flag的数。
        if i <= j:
            nums[i], nums[j] = nums[j], nums[i]  # 交换左右指针下标对应的数值
<<<<<<< HEAD
            i += 1  # 左指针继续往右走
            j -= 1  # 右指针继续往左走
=======
            # print(nums)
            i += 1  # 左指针继续往右走
            j -= 1  # 右指针继续往左走
    print(i,j, nums[i], nums[j])
>>>>>>> f48555796bfc0a4bec199762e860087db9167c8e
    if i < right:
        quicksort(nums, i, right)  # 递归解决flag左边的低位数组的排序
    if j > left:
        quicksort(nums, left, j)  # 递归解决flag右边的低位数组的排序
<<<<<<< HEAD
nums = [9,8,7,6,5,4,3,2,1]
=======
nums = [2,6,3,9,5,1,7]
>>>>>>> f48555796bfc0a4bec199762e860087db9167c8e
quicksort(nums, 0, len(nums) - 1)
print(nums)

#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
# lst = 'abc123cba'
# lst1 = lst[::-1]
# if lst == lst1:
#     print(f"{lst}是回文数")
# else:
#     print(f"{lst}不是回文数")

#16
# import json
# import time
# import requests
# with open("ip.txt","r+") as fp:
#     lst = fp.readlines()
#     with open("ip_information.txt", "w+", encoding="utf8") as fp1:
#         for i in lst:
#             lst1 = i.split(" ")
#             IP = lst1[0]
#             Bandwidth = lst1[9]
#             TIME = lst1[3].strip('[]')
#             time_array = time.strptime(TIME,"%d/%b/%Y:%H:%M:%S")
#             new = time.strftime("%Y-%m-%d %H:%M:%S",time_array)
#             response = requests.get(f'https://ip.taobao.com/outGetIpInfo?accessKey=alibaba-inc&ip={IP}')
#             response1 = json.loads(f'{response.text}')
#             region = response1['data'].get('region')
#             isp = response1['data'].get('isp')
#             fp1.write(f"{new},{region},{isp},{Bandwidth}\n")
>>>>>>> 3c18d82325db8625aef959edac3e2070a8fd232d
